﻿using System;
using System.Collections;

namespace Demo0603
{
    class Program
    {
        static void Main(string[] args)
        {
            //Score();//第一题
            Bank();//第二题
        }


        //第一题：
        //一个考试管理系统，需要录入考生成绩，只能录入数字，否则会报类型转换异常。
        //请编写相关代码，
        //1、捕获FormatException异常，并打印输出“异常已处理；
        //2、捕获OverflowException异常，数值超出double范围的异常，并打印输出“异常已处理；
        //3、捕获一般异常Exception异常。
        //4、最终处理finally
        //录入成绩结束后，请输出，总学生数，总分数，平均分。
        private static void Score()
        {
            try
            {
                int stus = 0;//总人数
                float sum = 0;//总分数
                float avg = 0;//平均分
                string no = null;//()

                while (true)
                {
                    Console.WriteLine("请输入考试分数：");
                    float num = float.Parse(Console.ReadLine());

                    Console.WriteLine("请问还要继续输入吗？（y/n）");
                    no = Console.ReadLine();
                    if (no.Equals("y"))
                    {
                        stus++;
                        for (int i = 0; i < stus; i++)
                        {
                            sum = sum + num;
                            break;
                        }
                    }
                    else
                    {
                        stus++;
                        for (int i = 0; i < stus; i++)
                        {
                            sum = sum + num;
                            break;
                        }
                        break;
                    }
                }
                avg = sum / stus;
                Console.WriteLine("总人数：{0}，总分数：{1}，平均分：{2}", stus, sum, avg);



            }
            catch (FormatException)
            {
                Console.WriteLine("格式化异常已处理！");
            }
            catch (OverflowException)
            {
                Console.WriteLine("超出范围异常已处理！");
            }
            catch (Exception)
            {
                Console.WriteLine("异常已处理！");
            }
            finally 
            {
                Console.WriteLine("最终处理！"); 
            }
        }
//第二题：
//编写一个程序，用以接收用户输入的两个浮点型的数值，一个值表示用户想要存放在银行账户中的余额，
//另一个值表示用户想要从银行账户中提取的金额。
//实现存取款功能，
//用户功能选择：1、存款，2、取款
//取款时：
//当用户想要提取的金额大于余额时，请手动抛出一个ArgumentOutOfRangeException
//参数超出范围的异常，异常信息可以写“取款金额大于余额，请重新输入”
//，如此以确保取款金额始终不大于当前余额。
//操作结束，打印输出余额是多少。
//最后再添加catch一般异常 Exception，使得数据类型转换的异常也能被捕获到。
        private static void Bank()
        {
            try
            {
                float ck = 0;
                float qk = 0;
                ArrayList list = new ArrayList();
                while (true)
                {
                Console.WriteLine("请选择是要执行的功能：1、存款 2、取款");
                int key = int.Parse(Console.ReadLine());
                switch (key)
                {
                    case 1:
                        Console.WriteLine("请输入存款金额：");
                        ck = float.Parse(Console.ReadLine());
                        list.Add(ck);
                        Console.WriteLine("存款金额是：{0},存款成功！",ck);
                        break;
                    case 2:
                            Console.WriteLine("请输入取款金额：");
                            qk = float.Parse(Console.ReadLine());
                            if (qk>ck)
                            {
                                throw new Exception("取款金额大于余额，请重新输入!");
                            }
                            else
                            {
                                Console.WriteLine("取款成功！剩余金额：{0}",ck-qk);
                            }
                        break;
                    default:
                            Console.WriteLine("自己多穷没点B数吗！");
                        break;
                }
                    
                }
            }
            catch (Exception)
            {
                Console.WriteLine("数据类型转换的异常！");
                throw;
            }
        }


    }
}
